|
|
| Menüeintrag |
|---|
| Keiner |
| Arbeitsbereich |
| Reinforcement |
| Standardtastenkürzel |
| Keiner |
| Eingeführt in Version |
| 0.19 |
| Siehe auch |
| Keiner |
Das Werkzeug Reinforcement Stückliste ermöglicht dem Anwender eine Stückliste von Bewehrungsstäben zu erstellen.
Dieses Werkzeug ist Teil des Arbeitsbereichs Reinforcement; dieser ist ein externer Arbeitsbereich, der mit dem Addon-Manager installiert werden kann.
Stückliste von Bewehrungsstäben
1. Wähle die Bewehrung und Bewehrung2-Objekte, die in die Stückliste aufgenommen werden sollen. Oder wähle
Struktur-Objekte zum Aufnehmen der
Bewehrungs-Objekte, die von diesen in der Stückliste verwaltet werden. Wenn nichts ausgewählt ist, wird die Stückliste für alle
Bewehrung- und Bewehrung2-Objekte, die in der Zeichnung enthalten sind, erstellt.
2. Wähle dann die Schaltfläche Rebar Stückliste aus den Bewehrungs-Werkzeugen.
3. Eine Dialog-Box wird sich öffnen, wie unten gezeigt.
4. Ändere Daten nach deinen Erfordernissen.
5. Zum Bearbeiten der Bewehrungs-Stücklisten-SVG-Konfiguration, auf die Schaltfläche SVG-Konfigurationen bearbeiten drücken. Es erscheint ein Dialogfeld wie unten gezeigt.
6. Die Bewehrung Stücklisten-SVG-Konfigurationen ändern und dann die Schaltfläche OK für Änderungen übernehmen drücken.
7. Auf OK oder Übernehmen klicken, um die Stückliste für Bewehrungsstäbe zu erstellen.
8. Abbrechen anklicken, um die Dialog-Box zu verlassen.
Allgemein:
SVG:
Siehe auch: Arch API,Reinforcement-API und Grundlagen der Skripterstellung in FreeCAD.
Das Werkzeug Reinforcement Stückliste kann in Makros und von der Python-Konsole aus mithilfe der folgenden Funktion verwendet werden:
bom_spreadsheet = makeBillOfMaterial(
column_headers=None,
column_units=None,
dia_weight_map=None,
rebar_length_type=None,
rebar_objects=None,
obj_name="RebarBillOfMaterial",
)
RebarBillOfMaterial-Tabellenblatt-Objekt für die angegebenen rebar_objects.
rebar_objects leer ist, wird das RebarBillOfMaterial-Tabellenblatt für alle Bewehrungsstäbe in einem Modell erstellt.column_headers ist ein Wörterbuch mit den Schlüsseln "Host" (Stab), "Mark" (Markierung), "RebarsCount" (Anzahl der Bewehrungsstäbe), "Diameter" (Durchmesser in mm), "RebarLength" (Länge in m/Stück) und "RebarsTotalLength" (Gesamtlänge in m) und den Werten als Tupel aus column_header und ihrer Sequenznummer. Beispiel: {
"Host": ("Stab", 1),
"Mark": ("Markierung", 2),
"RebarsCount": ("Anzahl der Bewehrungsstäbe", 3),
"Diameter": ("Durchmesser in mm", 4),
"RebarLength": ("Länge in m/Stück", 5),
"RebarsTotalLength": ("Gesamtlänge in m", 6),
}
set column sequence number to 0 to hide column.
column_units ist ein Wörterbuch mit den Schlüsseln "Diameter" (Durchmesser), "RebarLength" (Bewehrungsstahl-Länge), "RebarsTotalLength" (Gesamtlänge des Bewehrungsstahls) und den entsprechenden Einheiten als Wert. Beispiel: {
"Diameter": "mm",
"RebarLength": "m",
"RebarsTotalLength": "m",
}
dia_weight_map ist ein Wörterbuch mit dem Durchmesser als Schlüssel und dem entsprechenden Gewicht als Wert. Syntax: {
6: FreeCAD.Units.Quantity("0.222 kg/m"),
8: FreeCAD.Units.Quantity("0.395 kg/m"),
10: FreeCAD.Units.Quantity("0.617 kg/m"),
12: FreeCAD.Units.Quantity("0.888 kg/m"),
...,
}
rebar_length_type gibt den Typ der für die Stücklistenberechnungen verwendeten Bewehrungslänge an; dieser kann „RealLength” oder „LengthWithSharpEdges” sein.rebar_objects ist eine Liste von ArchRebar- und/oder rebar2- und/oder structures-Objekten (zur Auswahl von ArchRebar in dieser Struktur).
import FreeCAD, Draft, Arch
from ColumnReinforcement import TwoTiesSixRebars
from BillOfMaterial import BillOfMaterial_Spreadsheet
# It doesn't work if the structure is not based on a face
# Structure = Arch.makeStructure(length=1000, width=400, height=400)
Rect = Draft.makeRectangle(400, 400)
Structure1 = Arch.makeStructure(Rect, height=1600)
Structure1.ViewObject.Transparency = 80
Structure2 = Arch.makeStructure(Rect, height=1600)
Structure2.ViewObject.Transparency = 80
Structure2.Placement = FreeCAD.Placement(FreeCAD.Vector(1000, 0, 0), FreeCAD.Rotation(FreeCAD.Vector(0, 0, 1), 0))
FreeCAD.ActiveDocument.recompute()
# Create Straight Rebars
RebarGroup = TwoTiesSixRebars.makeTwoTiesSixRebars(
l_cover_of_ties=40,
r_cover_of_ties=40,
t_cover_of_ties=40,
b_cover_of_ties=40,
offset_of_ties=100,
bent_angle_of_ties=135,
extension_factor_of_ties=2,
dia_of_ties=8,
number_spacing_check=True,
number_spacing_value=10,
dia_of_main_rebars=16,
t_offset_of_rebars=40,
b_offset_of_rebars=40,
main_rebars_type="StraightRebar",
hook_orientation="Top Inside",
hook_extend_along="x-axis",
l_rebar_rounding=None,
hook_extension=None,
ties_sequence=("Tie1", "Tie2"),
structure=Structure1,
facename="Face6",
)
# Create LShaped Rebars with hook along x-axis
RebarGroup = TwoTiesSixRebars.makeTwoTiesSixRebars(
l_cover_of_ties=40,
r_cover_of_ties=40,
t_cover_of_ties=40,
b_cover_of_ties=40,
offset_of_ties=100,
bent_angle_of_ties=135,
extension_factor_of_ties=2,
dia_of_ties=8,
number_spacing_check=True,
number_spacing_value=10,
dia_of_main_rebars=16,
t_offset_of_rebars=-40,
b_offset_of_rebars=-40,
main_rebars_type="LShapeRebar",
hook_orientation="Top Outside",
hook_extend_along="x-axis",
l_rebar_rounding=2,
hook_extension=40,
ties_sequence=("Tie1", "Tie2"),
structure=Structure2,
facename="Face6",
)
COLUMN_UNITS = {
"Diameter": "mm",
"RebarLength": "m",
"RebarsTotalLength": "m",
}
COLUMN_HEADERS = {
"Host": ("Member", 1),
"Mark": ("Mark", 2),
"RebarsCount": ("No. of Rebars", 3),
"Diameter": ("Diameter in " + COLUMN_UNITS["Diameter"], 4),
"RebarLength": ("Length in " + COLUMN_UNITS["RebarLength"] + "/piece", 5),
"RebarsTotalLength": ("Total Length in " + COLUMN_UNITS["RebarsTotalLength"], 6),
}
DIA_WEIGHT_MAP = {
6: FreeCAD.Units.Quantity("0.222 kg/m"),
8: FreeCAD.Units.Quantity("0.395 kg/m"),
10: FreeCAD.Units.Quantity("0.617 kg/m"),
12: FreeCAD.Units.Quantity("0.888 kg/m"),
14: FreeCAD.Units.Quantity("1.206 kg/m"),
16: FreeCAD.Units.Quantity("1.578 kg/m"),
18: FreeCAD.Units.Quantity("2.000 kg/m"),
20: FreeCAD.Units.Quantity("2.466 kg/m"),
22: FreeCAD.Units.Quantity("2.980 kg/m"),
25: FreeCAD.Units.Quantity("3.854 kg/m"),
28: FreeCAD.Units.Quantity("4.830 kg/m"),
32: FreeCAD.Units.Quantity("6.313 kg/m"),
36: FreeCAD.Units.Quantity("7.990 kg/m"),
40: FreeCAD.Units.Quantity("9.864 kg/m"),
45: FreeCAD.Units.Quantity("12.490 kg/m"),
50: FreeCAD.Units.Quantity("15.410 kg/m"),
}
# To create Bill Of Material Spreadsheet for all rebars in a model
BillOfMaterial_Spreadsheet.makeBillOfMaterial(
column_headers=COLUMN_HEADERS,
column_units=COLUMN_UNITS,
dia_weight_map=DIA_WEIGHT_MAP,
rebar_length_type="RealLength",
)
# To create Bill Of Material Spreadsheet for rebars in Structure1
BillOfMaterial_Spreadsheet.makeBillOfMaterial(
column_headers=COLUMN_HEADERS,
column_units=COLUMN_UNITS,
dia_weight_map=DIA_WEIGHT_MAP,
rebar_length_type="LengthWithSharpEdges",
rebar_objects=[Structure1],
)
makeBillOfMaterialSVG(
column_headers: Optional[Dict[str, Tuple[str, int]]] = None,
column_units: Optional[Dict[str, str]] = None,
dia_weight_map: Optional[Dict[float, FreeCAD.Units.Quantity]] = None,
rebar_length_type: Optional[
Literal["RealLength", "LengthWithSharpEdges"]
] = None,
font_family: Optional[str] = None,
font_filename: Optional[str] = None,
font_size: Optional[float] = None,
column_width: Optional[float] = None,
row_height: Optional[float] = None,
bom_left_offset: Optional[float] = None,
bom_top_offset: Optional[float] = None,
bom_min_right_offset: Optional[float] = None,
bom_min_bottom_offset: Optional[float] = None,
bom_table_svg_max_width: Optional[float] = None,
bom_table_svg_max_height: Optional[float] = None,
template_file: Optional[str] = None,
output_file: Optional[str] = None,
rebar_objects: Optional[List] = None,
reinforcement_group_by: Optional[Literal["Mark", "Host"]] = None,
return_svg_only: bool = False,
) -> BOMContent
BOMContent-Objekt für die angegebenen rebar_objects zurück.
rebar_objects leer ist, wird das BOMContent-Objekt für alle Bewehrungsstäbe in einem Modell erstellt.column_headers ist ein Wörterbuch mit den Schlüsseln "Host" (Stab), "Mark" (Markierung), "RebarsCount" (Anzahl der Bewehrungsstäbe), "Diameter" (Durchmesser in mm), "RebarLength" (Länge in m/Stück) und "RebarsTotalLength" (Gesamtlänge in m) und den Werten als Tupel aus column_header und ihrer Sequenznummer. Beispiel: {
"Host": ("Stab", 1),
"Mark": ("Markierung", 2),
"RebarsCount": ("Anzahl der Bewehrungsstäbe", 3),
"Diameter": ("Durchmesser in mm", 4),
"RebarLength": ("Länge in m/Stück", 5),
"RebarsTotalLength": ("Gesamtlänge in m", 6),
}
set column sequence number to 0 to hide column.
column_units ist ein Wörterbuch mit den Schlüsseln "Diameter" (Durchmesser), "RebarLength" (Bewehrungsstahl-Länge), "RebarsTotalLength" (Gesamtlänge des Bewehrungsstahls) und den entsprechenden Einheiten als Wert. Beispiel: {
"Diameter": "mm",
"RebarLength": "m",
"RebarsTotalLength": "m",
}
dia_weight_map ist ein Wörterbuch mit dem Durchmesser als Schlüssel und dem entsprechenden Gewicht als Wert. Syntax: {
6: FreeCAD.Units.Quantity("0.222 kg/m"),
8: FreeCAD.Units.Quantity("0.395 kg/m"),
10: FreeCAD.Units.Quantity("0.617 kg/m"),
12: FreeCAD.Units.Quantity("0.888 kg/m"),
...,
}
rebar_length_type gibt den Typ der für die Stücklistenberechnungen verwendeten Bewehrungslänge an; dieser kann „RealLength” oder „LengthWithSharpEdges” sein.font_family gibt die Schriftartfamilie des Datentextes an.font_filename gibt den Dateinamen oder den vollständigen Pfad der Schriftartdatei an, die der Schriftartfamilie entspricht. Dies ist erforderlich, wenn Sie im reinen Konsolenmodus ohne GUI arbeiten.font_size gibt die Schriftgröße des Datentextes an.column_width gibt die Breite jeder Spalte in der Stücklistentabelle SVG an.row_height gibt die Höhe jeder Zeile in der Stücklistentabelle SVG an.bom_left_offset gibt den linken Versatz der Stückliste SVG in template_file an.bom_top_offset gibt den oberen Versatz der Stücklistentabelle SVG in template_file an.bom_min_right_offset gibt den minimalen rechten Versatz der Stücklistentabelle SVG in template_file an.bom_min_bottom_offset gibt den minimalen unteren Versatz der Stückliste SVG in template_file an.bom_table_svg_max_width gibt die maximale Breite der Stücklistentabelle in SVG an.bom_table_svg_max_height gibt die maximale Höhe der Stücklistentabelle in SVG an.template_file gibt die Vorlagendatei an, in der die generierte Stücklistentabelle platziert werden soll. Es muss sich um eine gültige TechDraw-Vorlagendatei wie hier handeln.output_file gibt die Ausgabedatei an, in die die generierte Stückliste SVG geschrieben werden soll.rebar_objects ist eine Liste von ArchRebar- und/oder rebar2- und/oder structures-Objekten (zur Auswahl von ArchRebar in dieser Struktur).reinforcement_group_by gibt an, wie Verstärkungsobjekte gruppiert werden sollen; dies kann „Mark“ oder „Host“ sein.return_svg_only gibt an, ob das Objekt BOMContent erstellt werden soll oder nicht. Wenn return_svg_only auf „True” gesetzt ist, wird weder das Objekt BOMContent erstellt noch SVG in die Datei output_file geschrieben. Stattdessen wird das SVG-Element zurückgegeben.
from pathlib import Path
import FreeCAD, Draft, Arch
from ColumnReinforcement import TwoTiesSixRebars
from BillOfMaterial import BillOfMaterial_SVG
# It doesn't work if the structure is not based on a face
# Structure = Arch.makeStructure(length=1000, width=400, height=400)
Rect = Draft.makeRectangle(400, 400)
Structure1 = Arch.makeStructure(Rect, height=1600)
Structure1.ViewObject.Transparency = 80
Structure2 = Arch.makeStructure(Rect, height=1600)
Structure2.ViewObject.Transparency = 80
Structure2.Placement = FreeCAD.Placement(FreeCAD.Vector(1000, 0, 0), FreeCAD.Rotation(FreeCAD.Vector(0, 0, 1), 0))
FreeCAD.ActiveDocument.recompute()
# Create Straight Rebars
RebarGroup = TwoTiesSixRebars.makeTwoTiesSixRebars(
l_cover_of_ties=40,
r_cover_of_ties=40,
t_cover_of_ties=40,
b_cover_of_ties=40,
offset_of_ties=100,
bent_angle_of_ties=135,
extension_factor_of_ties=2,
dia_of_ties=8,
number_spacing_check=True,
number_spacing_value=10,
dia_of_main_rebars=16,
t_offset_of_rebars=40,
b_offset_of_rebars=40,
main_rebars_type="StraightRebar",
hook_orientation="Top Inside",
hook_extend_along="x-axis",
l_rebar_rounding=None,
hook_extension=None,
ties_sequence=("Tie1", "Tie2"),
structure=Structure1,
facename="Face6",
)
# Create LShaped Rebars with hook along x-axis
RebarGroup = TwoTiesSixRebars.makeTwoTiesSixRebars(
l_cover_of_ties=40,
r_cover_of_ties=40,
t_cover_of_ties=40,
b_cover_of_ties=40,
offset_of_ties=100,
bent_angle_of_ties=135,
extension_factor_of_ties=2,
dia_of_ties=8,
number_spacing_check=True,
number_spacing_value=10,
dia_of_main_rebars=16,
t_offset_of_rebars=-40,
b_offset_of_rebars=-40,
main_rebars_type="LShapeRebar",
hook_orientation="Top Outside",
hook_extend_along="x-axis",
l_rebar_rounding=2,
hook_extension=40,
ties_sequence=("Tie1", "Tie2"),
structure=Structure2,
facename="Face6",
)
COLUMN_UNITS = {
"Diameter": "mm",
"RebarLength": "m",
"RebarsTotalLength": "m",
}
COLUMN_HEADERS = {
"Host": ("Member", 1),
"Mark": ("Mark", 2),
"RebarsCount": ("No. of Rebars", 3),
"Diameter": ("Diameter in " + COLUMN_UNITS["Diameter"], 4),
"RebarLength": ("Length in " + COLUMN_UNITS["RebarLength"] + "/piece", 5),
"RebarsTotalLength": ("Total Length in " + COLUMN_UNITS["RebarsTotalLength"], 6),
}
DIA_WEIGHT_MAP = {
6: FreeCAD.Units.Quantity("0.222 kg/m"),
8: FreeCAD.Units.Quantity("0.395 kg/m"),
10: FreeCAD.Units.Quantity("0.617 kg/m"),
12: FreeCAD.Units.Quantity("0.888 kg/m"),
14: FreeCAD.Units.Quantity("1.206 kg/m"),
16: FreeCAD.Units.Quantity("1.578 kg/m"),
18: FreeCAD.Units.Quantity("2.000 kg/m"),
20: FreeCAD.Units.Quantity("2.466 kg/m"),
22: FreeCAD.Units.Quantity("2.980 kg/m"),
25: FreeCAD.Units.Quantity("3.854 kg/m"),
28: FreeCAD.Units.Quantity("4.830 kg/m"),
32: FreeCAD.Units.Quantity("6.313 kg/m"),
36: FreeCAD.Units.Quantity("7.990 kg/m"),
40: FreeCAD.Units.Quantity("9.864 kg/m"),
45: FreeCAD.Units.Quantity("12.490 kg/m"),
50: FreeCAD.Units.Quantity("15.410 kg/m"),
}
# To create Bill Of Material SVG for all rebars in a model
BillOfMaterial_SVG.makeBillOfMaterialSVG(
column_headers=COLUMN_HEADERS,
column_units=COLUMN_UNITS,
dia_weight_map=DIA_WEIGHT_MAP,
rebar_length_type="RealLength",
font_family = "DejaVu Sans",
font_filename = "DejaVuSans.ttf",
font_size = 3,
column_width = 30,
row_height = 10,
bom_left_offset = 6,
bom_top_offset = 40,
bom_min_right_offset = 6,
bom_min_bottom_offset = 6,
bom_table_svg_max_width = 0,
bom_table_svg_max_height = 0,
template_file = str(Path(BillOfMaterial_SVG.__file__).parent.absolute() / "BOMTemplate.svg"),
output_file = None,
reinforcement_group_by = "Host",
)
# To create Bill Of Material SVG for rebars in Structure1
BillOfMaterial_SVG.makeBillOfMaterialSVG(
column_headers = COLUMN_HEADERS,
column_units = COLUMN_UNITS,
dia_weight_map = DIA_WEIGHT_MAP,
rebar_length_type = "LengthWithSharpEdges",
font_family = "DejaVu Sans",
font_filename = "DejaVuSans.ttf",
font_size = 3,
column_width = 30,
row_height = 10,
bom_left_offset = 6,
bom_top_offset = 40,
bom_min_right_offset = 6,
bom_min_bottom_offset = 6,
bom_table_svg_max_width = 0,
bom_table_svg_max_height = 0,
template_file = str(Path(BillOfMaterial_SVG.__file__).parent.absolute() / "BOMTemplate.svg"),
rebar_objects=[Structure1],
reinforcement_group_by = "Host",
)